Crate android_build

source ·
Expand description

Supports Android-specific Java build and run tasks in Rust projects from a Cargo build script.

§Tools exposed by this crate

§Environment variables in use

  • ANDROID_HOME or ANDROID_SDK_ROOT: path to the Android SDK directory.
  • ANDROID_BUILD_TOOLS_VERSION: the version of the Android build tools.
    • Examples: 33.0.1, 34.0.0-rc2.
    • This must be fully specified all in one string.
  • ANDROID_PLATFORM, ANDROID_API_LEVEL, or ANDROID_SDK_VERSION: the platform version string (aka API level, SDK version) being targeted for compilation.
    • All three of these environment variables are treated identically.
    • Examples: 34, android-34, android-33, 33.
    • If an SDK extension must be specified, use the full string with the android prefix like so: android-33-ext4.
    • This may or may not include the SDK extension level as a suffix (see ANDROID_SDK_EXTENSION below).
  • ANDROID_SDK_EXTENSION: the extension of the Android SDK.
    • To specify android-33-ext4, this can be set to -ext4, ext4, or just 4. All of these will be treated identically.
    • If ANDROID_PLATFORM/ANDROID_API_LEVEL/ANDROID_SDK_VERSION already includes an extension, then ANDROID_SDK_EXTENSION will be ignored.
  • ANDROID_D8_JAR: the path to the d8.jar file.
  • ANDROID_JAR: the path to the android.jar file.
  • JAVA_HOME: the Java SDK directory.

§Acknowledgments

This crate simplifies some code found in other crates:

  • dirs-sys for the Windows-specific home directory lookup.
  • java-locator for finding the Java home directory on macOS, Linux, and Windows.
  • jerk for arguments that can be passed into java and javac commands.

Structs§

  • Debug information to include in the output of a javac build.
  • A builder for a javac command that can be invoked.
  • A builder for a java command that can be invoked.

Constants§

Traits§

  • An extension trait for checking if a path exists.

Functions§

  • Returns the path to the d8.jar file for the given build tools version.
  • Returns the path to the android.jar file for the given API level.
  • Returns the path to the Android SDK directory.
  • Returns the path to the java executable by looking for $JAVA_HOME/bin/java.
  • Returns the JAVA_HOME path by attempting to discover it.
  • Returns the path to the javac compiler by looking for $JAVA_HOME/bin/javac.